// 请求服务器地址
import {errorMsg} from '../message.js'
import store from 'store'

const BASE_URL = {
	// "development": "https://chengdashi.cn:8686",
	// "development": "https://localhost:8686",
	"development": "https://localhost:8686",
	// "development": "https://chengdashi.cn:8686",
	"production": "https://chengdashi.cn:8686"
}


export const iconurl = 'https://chengdashi.cn'

const myRequest = (options) => {

    return new Promise((resolve, reject) => {
		
        //加载loading
        if (options["loading"]){
            uni.showLoading({
                title: '加载中'
            })
        }
		
        uni.request({
            // 开发者服务器接口地址（请求服务器地址 + 具体接口名）
            url: BASE_URL[process.env.NODE_ENV] + options.url,
            // 请求方式（若不传，则默认为 GET ）
            method: options.method,
            dataType: options.json || '',
            // 请求参数（若不传，则默认为 {} ）
            data: options.data || {},
            timeout: options.timeout || 4000,
            header: options.header || {
                'token': store.state.userStore.token || null,//uni.getStorageSync('skey'),
                'content-type': options.json === 'json' ? 'application/json;charset=UTF-8;' :
                    'application/x-www-form-urlencoded;charset=UTF-8;'
            },
            // 请求成功
            success: (res) => {
				if(res.statusCode >= 200 && res.statusCode <= 400){
					/* 401说明用户校验失败 */
					if(res.data.code === 401){
						res.data.msg = "登录过期"
						store.dispatch("tokenTimeOut")
					}
					resolve(res.data)
				}else{
					reject(res.data.error)
				}
            },
            // 请求失败
            fail: (err) => {
                errorMsg("请求数据失败")
                reject(err)
            },
            //请求结束之后，执行的回调函数（成功或失败都会执行）
            complete: () => {
                //隐藏loading
                uni.hideLoading();
            }
        })
    })
}

export const get = (options) => {
    options.method = 'GET'
    return myRequest(options)
}
export const post = (options) => {
    options.method = 'POST'
    return myRequest(options)
}

export const Delete = (options) => {
    options.method = 'DELETE'
    return myRequest(options)
}

export const put = (options) => {
    options.method = 'PUT'
    return myRequest(options)
}

export const upLoadfile = (options) => {

    return new Promise((resolve, reject) => {
        //加载loading
        uni.showLoading({
            title: '加载中'
        })
        uni.uploadFile({
            // 开发者服务器接口地址（请求服务器地址 + 具体接口名）
            url: BASE_URL[process.env.NODE_ENV] + options.url,
			files: options.files,
            filePath: options.filePath,
			formData: options.formData,
            name: options.name,
            timeout: options.timeout || 3000,
            header: {
                'token':  store.state.userStore.token || null,
            },
            // 请求成功
            success: (res) => {
                resolve(res.data)
            },
            // 请求失败
            fail: (err) => {
                uni.showToast({
                    title: '文件上传失败！',
                    icon: 'error'
                })
                reject(err)
            },
            //请求结束之后，执行的回调函数（成功或失败都会执行）
            complete: () => {
                //隐藏loading
                uni.hideLoading();
            }
        })
    })
}
